home *** CD-ROM | disk | FTP | other *** search
-
- ================================================================
- === VERSION 3.7 CHANGES ------------------------------------->>>
- ================================================================
-
- New Events :
-
- - xHOTKEY KeyCombination ON|OFF
- Gui4Cli now installs a Commodities Exchange Broker through which
- you can define various HotKeys. The KeyCombination can be something
- like "rawkey lshift f2" (see guide) and it "happens" when the user
- inputs this combination from whereever (i.e. even if a non - Gui4Cli
- window is the active one). You can give it a GADID and SETGAD it
- ON|OFF, and you can also UPDATE it, giving a new KeyCombination.
-
- - xNOTIFY File|Directory ON|OFF
- Will set notification on a file or directory and will "happen"
- every time the given file/dir changes in some way (i.e. if it
- is written to or deleted or whatever). You can give it a GADID
- and SETGAD it ON|OFF and you can also UPDATE it, giving a new
- file/dir name.
-
- New Commands :
-
- - SPEAK TextString
- Will use the "translator.library" (LIBS:) and the "narrator.device"
- (DEVS:), both of which you must have, to speak the given text. The
- speaking is done synchronously - i.e. Gui4Cli will stop and wait
- for the speaking to finish before proceeding.
-
- - SET SPEAK Rate/Pitch/Sex/Mode/Volume/Freq
- Will change the voice used in speaking to the new values you give.
- See guide for their meaning. The default is: 150/110/0/0/64/22200
-
- - SETSCREENTITLE GuiName Text
- Will set the text that will be shown in the screen's title bar,
- whenever the given Gui's window is the active one.
-
- - FLASH - Will flash the screen - use it to indicate an error.
-
- - MOVESCREEN GuiName/#ScreenName X Y
- Will move the screen that GuiName is (or will) open on to position
- X, Y. You can also give the ScreenName directly, by putting # in front.
-
- - WORKBENCH OPEN|CLOSE - will open or close the Workbench
-
- - SETATTR GuiName/GadID ATRIBUTE VALUE - will set the attributes of the
- given gadget. Does the same as the ATTR gadget modifier, but dynamically.
- Ex: SetAttr Mygui.gc/1 LVLINEDIST 3 - note that you would have to
- redraw the listview for the change to be visible.
- (This command was supposedly available in last version, but was not)
-
- Sound support :
-
- Standard mono IFF Samples, up to 64k in length, can now be loaded and
- used as sound effects or reminders. The commands that handle them,
- are similar to the image handling commands :
-
- - LOADSOUND FileName Alias - will load the sample and name it "Alias"
- - FREESOUND Alias - will free the above sample
- - PLAYSOUND Alias - will play the sound once
-
- - SETSOUND Alias VOLUME/SPEED value
- Will set the VOLUME (1-64) or the SPEED (124-1000) ie the pitch.
-
- Sounds can be used as effects on all types of gadgets, and on other
- events like window open/close, RMB and xOnKey. There are 2 ways you
- can do this.
-
- 1.- You can define the sound effects globally, and these will be
- used in all guis:
-
- > SET SndOpen|SndClose|SndGad|SndRMB|SndKey Alias
-
- You can set all these from the Gui4Cli.gc gui (called from
- the main requester in the WB tools menu)
-
- 2.- Or, you can define a different sound for every gadget, or key
- or window etc, using the Attribute system, with:
-
- > SETATTR mygui.gc/1 SOUND mysound <or> ATTR SOUND mysound
-
- The sound will be played every time the event is triggered.
- An attribute, if defined, will take precedence over a global sound.
- Note that with ATTR, sounds can also be attached to xONOPEN, xONCLOSE,
- xRMB and xONKEY events.
-
- TextIn hook :
-
- Added a TextIn gadget hook, providing the following :
-
- xTextIn Gadget Attributes (for ATTR & SETATTR):
-
- - TITYPE INT/FLOAT/HEX/DATE/UPPER/LOWER/STRING
- Will let you define what kind of data can be entered in the
- gadget. <Attr TiType FLOAT> for example will only let you
- enter numbers and '.' into it. DATE will allow numbers and /.-
- STRING allows anything. (*** still needs work on formating ***)
-
- - TITRANS ON|OFF
- The text in the textin gadget will, by default, be translated
- as soon as you've finished entering data. Set this attribute to
- OFF to stop translation.
-
- xTextIn Internal variables :
-
- $$TI.POS - the cursor position in the current textin gadget
- $$TI.LENGTH - total length of string in the gadget
- $$TI.REC - the string in the gadget
- $$TI.ID - the ID of the gadget
- $$TI.GUI - the name of the gui it's in
-
- Internal variables :
-
- - $$LV.VAR internal variable - will give you the (full path of) the
- name of the listview variable. eg: mygui.gc/myvar
-
- - $$RAND.xxx - will supply you with a random number from 0 to "xxx".
- eg: $$Rand.100 - will give you a random number from 0 to 100.
- Note that if you want a range of 1-100, you would have to do
- x = $($$rand.99 + 1) - The function used is SAS's drand48() which
- generates the number using a linear congruential algorithm and 48bit
- arithmetic... (swear to God :)
-
- - $$MEM.CHIP - the remaining chip memory
- - $$MEM.FAST - the remaining fast memory
- - $$MEM.ALL - all the remaining memory
- - $$MEM.CLARGE - largest chip memory block (slow)
- - $$MEM.FLARGE - largest fast mem block (slow)
-
- - $$G4C.TABS - current tab size
- - $$G4C.GRID - current grid size
-
- Attributes (ATTR & SETATTR) :
-
- - LVFILTER Pattern
- Will filter the files in a dir listview according to the
- pattern you give - examp - make a LV hide all the icons:
- - SetAttr MyGui.gc/1 LVFILTER "~(#?.info)"
- Must <LVDir refresh> for the change to actually take place.
-
- Improvements :
-
- - MakeScreen will now also understand the size argument as :
- Width/Height/Depth/ViewMode - viewmode is optional
- > MakeScreen MyScreen 640/512/4/0x21004 'my screen'
-
- - You can now give -10 as Top in a WinBig command and the window
- will be positioned just under the screen title bar.
-
- - New operator: !! (double exclamation) means not equal, but unlike
- the != operator, it's case insensitive - i.e. <if a !! A> is FALSE
-
- - Made a big internal change in the way commands are recognized
- and structured. As a result, Gui4Cli now parses files a little
- faster (we're talking microseconds here.. if you can tell the
- difference you're probably an alien). More importantly it allows
- me to add and manage commands easier.
-
- - The second part of an internal variable will now be translated
- if it's a variable - (eg: $$RAND.$x) - $x must be a simple
- variable - no paths, [], or var-in-var allowed.
-
- Changes to Guis :
-
- - Changed the Gui4Cli.gc gui. The preferences now include sound
- effects. Also, now they can be saved in file guis:Gui4Cli.prefs
- which is a file that Gui4Cli will look for the 1st time it starts
- up and run it, if it finds it.
-
- Bugs & Fixes :
-
- - Fixed nasty bug in Set Buffers NewSize.
-
- - Some programs like DPaint and Scala ignored arexx messages sent
- from Gui4Cli with the SendRexx command. That has now been fixed.
- They wanted the ln_Name field of the msg to be set to "REXX"
-
- - Buffers for the SETWINTITLE and SETSCREENTITLE commands are
- now allocated dynamically, so there no need anymore to ensure
- that the string buffer you give is large enough to fit the
- translated version of the string. You can now do :
- > SetWinTitle mygui.gc '$$lv.dir'
-
- - SetWinTitle will now recognise the #this keyword
-
- - Changed tab handling in listviews. Before, tabs were expanded
- when the file was loaded. This meant that tabs became spaces
- if you thereafter saved the file again with LVSave. Now, the
- file is loaded as is, and tab expansion is done in the Listview
- hook, at rendering time. It's better this way..
-
- - Changed the LVFormat Extension (used in the CedBar.gc gui)
- to account for the above change.
-
- - MakeScreen - background pics now have correct colors.
-
- - SetColor will disregard colors which are out of range.
-
- - Fixed WinOnMouse mouse position. It didn't account for different
- screen positions.
-
- ================================================================
- === VERSION 3.6 CHANGES ------------------------------------->>>
- ================================================================
-
- Events & Commands :
-
- - Event : xTIMER TIME|SINGLE|REPEAT TIME|INTERVAL ON|OFF
- will provide you with accurate timing events - see the guide
- for details.
-
- - ClipBoard support for text clips is now provided for listviews.
- o When you load a file called Clips:0 (or any number 0-255) then
- the lv will load whatever is in that clipboard unit.
- o When you save a file whose file path starts with "CLIPS:" i.e.
- something like Clips:3, the lv will be saved to the given
- clipboard unit in correct iff format.
- o Moreover listviews will load any IFF-FTXT file correctly.
-
- - SHAREMENU GuiName - (Global command)
- Will share the menus of the named gui file. When the menu is
- selected it will be as if the other gui's (the one which has the
- actual menu events in it) menu was selected and all commands
- attached to it will be executed.
-
- - Menus will now accept many BARLABEL items.
-
- - Now you can give '#This' as the gui file name, and it will
- mean the current file - i.e. GuiOpen #This - will mean : open
- the file that this command appears in. This gives you more
- independent code.
-
- - CONTROL-R will now execute all xOnClose/Quit/Load commands
- it encounters while Re-Loading a file. Note that your gui
- will not re-open if there is no guiopen command in the
- xOnLoad event.
-
- - RESINFO FontHeight ScreenWidth ScreenHeight - is a new Global
- command with which you can give some info to Gui4Cli to enable
- it to resize the gui correctly on other people's systems.
-
- - Worked around gadtools limitation by which when you move a
- listview with the scroller and after try to continue with the
- arrow keys, it snaps back to the last record you had clicked
- on - now Gui4Cli will guess the line and scroll correctly.
-
- ARexx :
-
- - There is now a global variable named *REXXVAR which has
- special meaning. You use it as you would any global variable
- but when someone sends a rexx command to Gui4Cli from a
- rexx program which has OPTIONS RESULTS declared, then the
- contents of this variable will be returned and will be
- available from withing arexx as variable RESULT. So...
- >> SetVar "*REXXVAR" "'$mygui.gc/myvar'"
- ..would put whatever is in $mygui.gc/myvar into RESULT.
-
- Note the use of the quotes: one set for arexx, another for
- Gui4Cli (since $mygui.gc/myvar could be a string of words).
-
- - If you set OPTIONS RESULTS you will now cause the Gui4Cli
- command you have sent from an ARexx program to be executed
- synchronously. This has the advantage of returning a result.
- Without OPTIONS RESULTS the execution is asynchronous.
-
- - Also fixed some Gui4Cli<->ARexx communication errors..
- You can now run a rexx program with a public port and have
- it communicate back and forth with Gui4Cli without the
- deadlocks that used to occur.
-
- C Programmers Interface :
-
- - Have provided an include file with Gui4Cli internal
- structures and set up a mechanism whereby you can communicate
- with Gui4Cli, and in effect provide extensions to Gui4Cli's
- command set, as follows :
-
- - From outside programs -to-> Gui4Cli
- a) Send message and LOCK Gui4Cli, look at it's internal
- structures, manipulate variables, listviews etc, and then
- unlock it again, and let it continue, or
- b) Send command lines for it to execute (like rexx msgs)
-
- - From Gui4Cli -to-> outside programs
- Use the new command :
- > CALL PortName Command Arg1 Arg2... Arg6
- to send special Gui4Cli messages containing commands
- to outside programs, who should then process the commands
- using, if they want, any of Gui4Cli's internal structures,
- and give control back to Gui4Cli (maybe returning something)
-
- See the examples in the "Guis:Ext" directory for more info.
-
- IMPORTANT NOTE :
- - Changes have been made to the structures of the BETA version
- that was on my page !!! - Recompile or crash.
-
- Extensions :
-
- Two extensions can already be found in guis:ext :
-
- - GCSound - a 8SVX sample player (mono only for now) with the
- ability to load & play many samples simuiltaneously, change
- speed & volume while playing etc - Full gui is available in
- the same directory.
-
- - LVFormat - various functions which act on the current listview
- like : wordwrap, indent, justify etc
-
- New internal variables :
-
- $$SYS.AW - Active Window Title (may or may not be a Gui4Cli window)
- $$SYS.AS - Active Screen title
- $$SYS.ASN - Active Screen Name (if it's public)
- $$SYS.FS - Frontmost Screen Title
- $$SYS.FSN - Frontmost Screen Name (if it's public)
- If you need other data (width etc) you can SetScreen the current
- gui to the name you want (no need to open it) and read the
- $$SRC.xx vars.
-
- $$SYS.TIME - the current time (ex: 10:30:25 - hh:mm:ss)
- $$SYS.TS - the seconds part of the above time (i.e. 25)
- $$SYS.TM - the minutes part (i.e. 30)
- $$SYS.TH - the Hours part (i.e. 10)
-
- $$SYS.DATE - the date (see below for formats)
- - following available *only* for dd-mm-yy (CDN) format:
- $$SYS.DD - the Day part of the above date
- $$SYS.DM - the month part
- $$SYS.DY - the year part
-
- $$SYS.DAY - the day of the week (i.e. Monday)
-
- By default the date format is DD-MM-YY (15-07-98)
- You can change this with the SET command :
- > SET DATEFORMAT number - where number can be:
- 0 = DOS format -> dd-mmm-yy (15-Apr-98)
- 1 = INT format -> yy-mm-dd
- 2 = USA format -> mm-dd-yy
- 3 = CDN format -> dd-mm-yy (default)
- NOTE : the $$SYS.DD/DM/DY vars aply *only* to CDN format!
-
- Bug fixes :
-
- - Fixed 10 enforcer hits, only 1 of which was of any real danger,
- and you can thank Giuseppe Chillemi for pointing them out to me.
- Gui4Cli is now clean with Enforcer (until the next bug..)
- Also fixed an enforcer hit in c:gui.
-
- - Not actually a bug.. Now RUN will also receive a console which
- will be opened every time something is RUN.
-
- - Got the SAS 6.58 patch and recompiled, optimized and caught a
- few other small bugs too..
-
- - LVSearch will now stop at every string found - if there are many
- instances of a string in a lv line. The $$search.pos etc internal
- vars will show the position & length correctly. ** fixed again **
-
- - Fixed ReadVar trash if it read less than you asked for.
-
- - xICON can now be setgad HIDE|SHOW (had forgoten to put it..)
-
- - Fixed some GuiEditing graphics errors.
- - Also xICON new positions will now be saved (again forgoten)
-
- - SET DEBUGSTEP ON|OFF, will cause an easy requester to appear
- before every command is executed (in debug mode) so you can
- control execution (I used this for catching the enforcer bugs)
-
- - Setwintitle will now work even if window is not open.
-
- - Fixed a bug where messages returned from launches & pipes got
- confused with messages replied from AREXX and could lock Gui4Cli.
-
- - makedir will no long be confused if there is a / at the end
-
- - Fixed bug reported by Chris Ralph, where LVINSERT increased
- the total record count by 2 instead of 1
-
- ================================================================
- === VERSION 3.5 CHANGES ------------------------------------->>>
- ================================================================
-
- Mathematical Abilities :
-
- - Added mathematical expression evaluation and floating point numbers.
- You can now enclose an expression in brackets with a $ in front
- and Gui4Cli will evaluate it. Variables can be included :
- var = $(45*7.45+($OtherVar /25))
- say 'The answer is: $($var *2)\n'
- Moreover, inside the brackets you can use the math functions :
- abs(), sin(), cos(), tan(), log(), ln(), exp(), 'pi', etc
-
- - BECAREFULL with variables..
- You must leave a space or ')' or '(' or '\' after the var
- name otherwise Gui4Cli will not read the var name correctly.
- say '$($var*2)\n' <- is incorrect (the var name is "var*2")
- Read more in "Important Topics"
-
- Database ListViews :
-
- - ListViews can now have fields (or columns) if you load a special
- type of DataBase file - i.e. a file saved in a special format.
- This introduces new notions like fields (which are something like
- variables) - Read about it in the Guide, in "Important Topics".
-
- - LVSort will now also sort by field : LVSort %FieldName
- All sorting is ascending i.e. from small to large
-
- DataBase ListView Commands:
-
- - DBSUM ALL|SELECTED|UNSELECTED %FieldName ResVar
- Will add all specified fields in a DB listview and place the
- result into ResVar.
-
- - RECSORT %FieldName
- Will sort the current record into a DB listview according to
- the given field. To be used when you add or edit a record, instead
- of having to sort the whole lv from scratch.
-
- New ListView Commands:
-
- - LVClip CUT|COPY lines|-1 ADD|PASTE|INSERT gui ID
- Will CUT or COPY the amount of lines specified (or all if -1) from
- the current LV (starting at the current record) and ADD or PASTE or
- INSERT them (after the current record) into the destination LV given.
-
- - LVSwitch Gui ID - Will switch the data of the current listview
- with the one specified. Everything else (IDs, gadget attributes,
- lvmode etc) will remain the same.
-
- - Added the following keywords to LVMULTI:
- SHOW - will refresh the LV
- ALL/NONE - select/deselect *all* lv items
-
- - LVMOVE 0 - will now refresh the LV display.
-
- - If you give the escape code for the "concealed mode" in a listview,
- the text will now be rendered in 3D (since I don't know what the hell
- concealed stands for and multiview ignores it anyway..)
-
- BTW : Its <ESC>[8m -or- <ESC>[32;8m (for white on black shadow)
-
- Attributes to control gadgets :
-
- - ATTR AtributeName Value - (a gadget modifier)
- - SETATTR Gui ID AtributeName Value - (a command)
- can now be used to set various atributes of various gadgets, like
- setting the field color & style in DataBase listviews, the
- distance between lv lines, etc..
-
- Variables :
-
- - New (the last - I promise :) LOCAL variables which are declared
- within the event they belong to, with the gadget modifier :
- LOCALVAR var1/var2/var3 etc..
- These are valid *only* inside the event in which they are declared.
-
- - Now you can use the new - VarName[start][length] - notation on
- all types of variables (env: vars, LV fields, internal vars, normal
- and local vars).
-
- File requesters :
-
- - You can now provide a default file together with the DirName
- (last argument) and it will be shown in the file gadget.
-
- - Put a '#' char in front of the DirName you give, to force a
- requester to open at this same dir every time.
-
- - Requesters will no longer be confused by quoted strings.
-
- Various improvements :
-
- - Mouse positions for WinOnMouse are now taken from IntuitionBase.
- This allows you to pop-up guis at the mouse, when the command to
- open the gui is sent from an other program.
-
- - You can give <Guiscreen #ScreenName FRONT|BACK> now, using the
- actual ScreenName if you want, by putting a # character in front.
-
- - You can now declare an xIcon as "" meaning that you don't want to
- show it yet, or changeicon to "" making it disappear.
-
- - Extract now has 2 new keywords :
- HEX - will convert the number given into Hex notation
- OCT - will convert it into octal notation
-
- - DEBUG mode will no longer print out the GET:/SET: statements.
- You can SET DEBUGVARS ON|OFF, if you prefer the old method.
-
- Bug fixes :
-
- - If you try to act on a file whose dir has been changed, the Dir
- Listviews will now refresh the dir, check if the file still
- exists and if so, they will go ahead and act on it. They used
- to just refresh and stop. It's more intuitive like this.
-
- - LVSave will now set $$Retcode if it fails:
- Can't open file = 10, nothing to save = 5.
-
- - Fixed $$lv.tot which showed 1 record when in "No data" mode.
-
- - LVs now gets updated if OFF, but not updated if HIDEn (even if no
- redrawn given yet).
-
- NOTE : It is *much* faster to HIDE an lv and act on it (with commands
- like lvadd, lvput etc) and then SHOW it again, than to have the LV
- updated continuously while actions are going on. When you show it
- again, you must "nudge" it into redrawing itself - with LVMULTI SHOW
- or LVMOVE 0
-
- - Fixed small bug in guirename (it was case sensitive)
-
-
- ================================================================
- === VERSION 3.4 CHANGES ------------------------------------->>>
- ================================================================
-
- NEW COMMANDS :
-
- - TEXTFILE FileName
- - will mark the start of a text file. Lines of text will be read in
- and writen to "FileName". Use "###" (3 hash characters) to mark the
- end of the text block. They MUST appear at the begining of a line.
- A TEXTFILE can appear anywhere in a gui.
- Good for embedding arexx scripts or data for listviews etc..
-
- - SEARCHVAR Variable String CI|CS FIRST|NEXT
- Search a Variable for a string - FIRST occurrence, NEXT occur.. etc
- Results can be read via internal variables:
- - $$SEARCH.POS = contains the number of the character where the string
- found begins (0 is the 1st character) - or "" if nothing found.
- - $$SEARCH.LENGTH = the total length of the variable.
-
- - REPVAR Variable OldString NewString CI|CS
- Will replace all occurances of OldString in Variable with NewString
- CS means case sensitive, CI not.
-
- - LVREP OldString NewString CI|CS
- Do the replacement on ALL the records of the current listview
-
- - You can now use ++ and -- on a variable, C style - i.e. ++var is the
- same as saying: counter var inc 1. Same for --var.
-
- - IFEXISTS and WAIT now have a negative form, by puting a ~ character
- in front of the name of the item you're looking for.
- - IfExists PORT ~MyPort
- will be TRUE if port "MyPort" does *not* exist.
-
- - You can now hit Control-D in any window to start/stop debug.
-
- BUG FIXES :
-
- - Fixed $$REXXRET which stoped working in V3.3 (a stupid error..)
-
- - Inverted all the GadKey KeyBoard shortcuts : now a normal keypress
- increases a gadget whereas a shifted one decreases it (used to be oposite)
-
- - Enabled binary chars in env variables, so that they can contain
- multiple lines. If last line has a trailing \n it's removed.
-
-
- ================================================================
- History of previous versions donated to the National Museum of Modern
- Art. They didn't want it either, so I printed it out, burned it and
- danced Kartsilama on the ashes..
-
-
-
-